package com.mzy.basics.test.cloneTwoChangeTwo;

/**
 * @author Ives
 * * @date 2022/1/26
 */
public class PersonApp {

  /**
   * 浅拷贝也可以实现对象克隆，从这名字你或许可以知道，这种拷贝一定存在某种缺陷，是的，它就是存在一定的缺陷，先来看看浅拷贝的定义：
   * 如果原型对象的成员变量是值类型，将复制一份给克隆对象，也就是说在堆中拥有独立的空间；如果原型对象的成员变量是引用类型，
   * 则将引用对象的地址复制一份给克隆对象，也就是说原型对象和克隆对象的成员变量指向相同的内存地址。换句话说，在浅克隆中，
   * 当对象被复制时只复制它本身和其中包含的值类型的成员变量，而引用类型的成员对象并没有复制
   *
   */
  public static void main(String[] args) throws Exception {


// 初始化一个对象
    Person person = new Person("平头哥",20,"123456@qq.com","我的公众号是：平头哥的技术博文");
    // 复制对象
    Person person1 = (Person) person.clone();
    // 改变 person1 的属性值
    person1.setName("我是平头哥的克隆对象");
    // 修改 person age 的值
    person1.setAge(22);
    person1.setDesc("我已经关注了平头哥的技术博文公众号");
    System.out.println("person对象："+person);
    System.out.println();
    System.out.println("person1对象："+person1);

  }
}
